<?php
namespace app\api\library\wechat;

use app\api\library\wechat\ErrorCode;

/**
 * XMLParse class
 *
 * 提供提取消息格式中的密文及生成回复消息格式的接口.
 */
class XMLParse
{

	/**
	 * 提取出xml数据包中的加密消息
	 * @param string $xmltext 待提取的xml字符串
	 * @return string 提取出的加密消息字符串
	 */
	public function extract($xmltext)
	{
		try {
//			$xml = new DOMDocument();
//			$xml->loadXML($xmltext);
//			$array_e = $xml->getElementsByTagName('Encrypt');
//			$array_a = $xml->getElementsByTagName('ToUserName');
                        $obj = json_decode($xmltext,1);
			$encrypt = $obj['Encrypt'];
			$tousername = $obj['ToUserName'];
			return array(0, $encrypt, $tousername);
		} catch (Exception $e) {
//			print $e . "\n";
			return array(ErrorCode::$ParseXmlError, null, null);
		}
	}

	/**
	 * 生成xml消息
	 * @param string $encrypt 加密后的消息密文
	 * @param string $signature 安全签名
	 * @param string $timestamp 时间戳
	 * @param string $nonce 随机字符串
	 */
	public function generate($encrypt, $signature, $timestamp, $nonce)
	{
		$format = "<xml>
<Encrypt><![CDATA[%s]]></Encrypt>
<MsgSignature><![CDATA[%s]]></MsgSignature>
<TimeStamp>%s</TimeStamp>
<Nonce><![CDATA[%s]]></Nonce>
</xml>";
                
//		return sprintf($format, $encrypt, $signature, $timestamp, $nonce);
                //更改为json
                $data = [];
                $data['Encrypt'] = $encrypt;
                $data['MsgSignature'] = $signature;
                $data['TimeStamp'] = $timestamp;
                $data['Nonce'] = $nonce;
		return json_encode($data);
	}

}


?>